/**
 * \mainpage
 * Cele i załozenia:
 * - Stworzenie API pozwalającego na korzystanie z danych przez moduł interfejsu.
 * - Stworzenie systemu zapytań dla komunikacji z modułem Deamona przy użyciu modułu sieci.
 * .
 * \n
 * Wymagania funkcyjne:
 * - Komunikacja z modułem interfejsu i kernela.
 * - Serializacja oraz deserializacja danych przesyłanych przez sieć.
 * - Opakowanie danych w obiekty.\n
 * - Formułowanie oraz odpowiadanie na zapytania.
 * - Wymiana danych przy użyciu modułu sieci.
 * .
 * Wymagania nie funkcjonalne:
 * - Stworzenie łatwego oraz przejrzystego API.
 * - Określenie systemu zapytań oraz odpowiedzi.
 * .
 */
package userfunctions;

/**
 * Główna klasa programu.
 * @author Kamil Woźnicki i Michał Krajewski
 */
public class UserFunctions {
    /**
     * Metoda main
     * @param args argumenty
     */
    public static void main(String[] args) {
        LoginManager login = new LoginManager();
        Person p = login.loginUser("user", "password");
        
        if (p == null) {
            System.out.println("Blad logowania");
        } else if (p instanceof Client) {
            handleClient((Client)p);
        } else if (p instanceof Banker) {
            handleBanker((Banker)p);
        } else if (p instanceof Administrator) {
            handleAdministrator((Administrator)p);
        } else {
            System.out.println("Blad wewnetrzny.");
        }
    }
    
    /**
     * Przykłada obsługa klienta.
     * @param client
     */
    public static void handleClient(Client client) {
        System.out.println("Mamy klienta!");
    }
    
    /**
     * Przykładowa obsługa bankiera.
     * @param banker
     */
    public static void handleBanker(Banker banker) {
        System.out.println("Mamy bankiera!");
    }
    
    /**
     * Przykładowa obsługa administratora.
     * @param admin
     */
    public static void handleAdministrator(Administrator admin) {
        System.out.println("Mamy admina!");
    }
}
